710 SUB$=SPACE$(100):FOR I=1 TO 100:READ J:MID$(SUB$,I,1)=CHR$(J):NEXT I:SUB2$=SPACE$(17):FOR I=1 TO 17:READ J:MID$(SUB2$,I,1)=CHR$(J):NEXT I
720 GOSUB 10000 ' Clear screen and draw border
730 PAGFROM=0:PAGTO=1:GOSUB 21000 ' Save border for later
740 DATA &H55,&H89,&HE5,&H8B,&H76,&H08,&H8B,&H14,&HB1,&H04,&HD3,&HE2,&H8B,&H76,&H06,&H8B,&H04,&H09,&HC2,&H8B,&H76,&H0A,&H8B,&H04,&HB3,&H10,&HF6,&HEB,&HB1,&H08,&HD3,&HE0,&H89,&HC7,&H8B,&H76,&H0C,&H8B,&H04,&HF6,&HEB,&HB1,&H08,&HD3,&HE0
750 DATA &H89,&HC6,&H1E,&H06,&H52,&HBA,&HDA,&H03,&HEC,&HA8,&H08,&H74,&HFB,&HB0,&H25,&HBA,&HD8,&H03,&HEE,&H5A,&HB8,&H00,&HB8,&H8E,&HD8,&H8E,&HC0,&HB9,&H00,&H10,&HFC,&HAD,&H88,&HD4,&HAB,&HE2,&HFA
760 DATA &HB8,&H40,&H00,&H8E,&HD8,&HA0,&H65,&H00,&HBA,&HD8,&H03,&HEE,&H07,&H1F,&H5D,&HCA,&H08,&H00,&H55,&H89,&HE5,&H8B,&H5E,&H06,&H8B,&H57,&H01,&HB4,&H09,&HCD,&H21,&H5D,&HCA,&H02,&H00
770 RETURN
1000 REM Display initial screen routine
1010 CLS:PAGFROM=1:PAGTO=0:GOSUB 21000 ' Clear screen and draw border
1020 GOSUB 13000 ' Display function key definitions
1030 GOSUB 14000 ' Display title
1040 GOSUB 9000 ' Display menu
1050 GOSUB 11000:IF I<>2 THEN IF J<49 OR J>52 THEN GOSUB 15000:GOTO 1050 ELSE PRINT CHR$(J);:J=J-48:FOR K=1 TO 50:NEXT K:RETURN
1060 IF J<59 OR J>62 THEN GOSUB 15000:GOTO 1050
1070 J=J-58
1080 RETURN
2000 REM Select border color
2010 CLS:PAGFROM=1:PAGTO=0:GOSUB 21000 ' Clear screen and draw border
2020 GOSUB 14000 ' Display title
2030 GOSUB 16000 ' Display text
2040 GOSUB 11000:IF I<>2 THEN IF J<49 OR J>51 THEN GOSUB 15000:GOTO 2040 ELSE PRINT CHR$(J);:J=J-48:FOR K=1 TO 50:NEXT K:GOTO 2060
2050 GOSUB 15000:GOTO 2040
2060 ON J GOTO 2070,2080,2090
2070 BORDER=BORDER+1:IF BORDER>15 THEN BORDER=BORDER-16:GOTO 2100 ELSE GOTO 2100
2080 BORDER=BORDER-1:IF BORDER<0 THEN BORDER=BORDER+16:GOTO 2100 ELSE GOTO 2100
2090 RETURN
2100 COLOR ,,BORDER:LOCATE ,POS(0)-1:PRINT " ";:LOCATE ,POS(0)-1:GOTO 2040
3000 REM Select background color
3010 CLS:PAGFROM=1:PAGTO=0:GOSUB 21000 ' Clear screen and draw border
3020 GOSUB 14000 ' Display title
3030 GOSUB 17000 ' Display text
3040 GOSUB 11000:IF I<>2 THEN IF J<49 OR J>51 THEN GOSUB 15000:GOTO 3040 ELSE PRINT CHR$(J);:J=J-48:FOR K=1 TO 50:NEXT K:GOTO 3060
3050 GOSUB 15000:GOTO 3040
3060 ON J GOTO 3070,3080,3090
3070 BG=BG+1:IF BG>7 THEN BG=BG-8:GOTO 3100 ELSE GOTO 3100
3080 BG=BG-1:IF BG<0 THEN BG=BG+8:GOTO 3100 ELSE GOTO 3100
3090 RETURN
3100 IF BG=FG THEN 3060 ELSE COLOR ,BG:LOCATE ,POS(0)-1:PRINT " ";:LOCATE ,POS(0)-1:GOTO 3010
4000 REM Select foreground color
4010 CLS:PAGFROM=1:PAGTO=0:GOSUB 21000 ' Clear screen and draw border
4020 GOSUB 14000 ' Display title
4030 GOSUB 18000 ' Display text
4040 GOSUB 11000:IF I<>2 THEN IF J<49 OR J>56 THEN GOSUB 15000:GOTO 4040 ELSE PRINT CHR$(J);:J=J-48:FOR K=1 TO 50:NEXT K:GOTO 4060
4050 GOSUB 15000:GOTO 4040
4060 ON J GOTO 4070,4080,4090,4110,4130,4140,4170,4200
4070 FG=FG+1:IF FG>15 THEN FG=FG-16:GOTO 4210 ELSE GOTO 4210
4080 FG=FG-1:IF FG<0 THEN FG=FG+16:GOTO 4210 ELSE GOTO 4210
5210 IF PEEK(ZO!+27)=44 AND PEEK(ZO!+28)=40 AND PEEK(ZO!+29)=45 AND PEEK(ZO!+30)=41 THEN POKE ZO!+10,BORDER:POKE ZO!+11,BG:POKE ZO!+12,FG:POKE ZO!+13,FGHI:IF REVVID=1 THEN POKE ZO!+14,FGINV*16 ELSE POKE ZO!+14,FGINV ELSE RETURN
5220 I=VARPTR(SUB2$)
5230 DEF SEG:OFS!=PEEK(I+1)+256*PEEK(I+2)
5240 IF OFS!>32768 THEN J=OFS!-65536 ELSE J=OFS!
5250 IF I<>VARPTR(SUB2$) THEN 5220
5260 LOCATE 24,70,0:CALL J(SGRSTR$)
5270 RETURN
9000 REM Display initial menu
9010 A$="DOSCOLOR MAIN MENU":LOCATE 7,FNCENT(A$):PRINT A$
9060 LOCATE 19,T1,1,0,7:PRINT "Type the number of your choice: ";
9070 RETURN
10000 REM Border routine
10010 CLS
10020 A$=INKEY$
10030 FOR I=1 TO 2:LOCATE (I-1)*23+1,1:PRINT CHR$(202-I);:FOR J=2 TO SWID-1:PRINT CHR$(205);:NEXT J:NEXT I:LOCATE 1,SWID:PRINT CHR$(187);:DEF SEG=&HB800:POKE (24*SWID-1)*2,188:DEF SEG
10040 FOR I=2 TO 23:LOCATE I,1:PRINT CHR$(186);:LOCATE I,SWID:PRINT CHR$(186);:NEXT I
10050 RETURN
11000 REM Keyboard input routine
11010 A$=""
11020 WHILE A$=""
11030 A$=INKEY$
11040 WEND
11050 I=LEN(A$):ON I GOTO 11070,11090
11060 GOTO 11010
11070 J=ASC(MID$(A$,1,1))
11080 RETURN
11090 J=ASC(MID$(A$,2,1))
11100 RETURN
12000 DEF SEG=&HFACE:K=1:I=13
12010 T$=STRING$(13,32):J=1
12020 TMP=PEEK(I):IF TMP<>0 THEN MID$(T$,J,1)=CHR$(TMP):J=J+1:I=I+1:GOTO 12020